from collections import OrderedDict

from rest_framework.pagination import PageNumberPagination

# 自定义分页对象
from rest_framework.response import Response


class MyPageNumberPagination(PageNumberPagination):
    # 1,默认的大小 [每页显示数量],如果不配置，就取settings的值
    page_size = 5

    # 2,前端可以指定页面大小，此字段名称决定了 url后面的 每页数量的字段
    page_size_query_param = 'limit'

    # 3,页面的最大大小 [每页显示数量]，如果前端传的值大于这个设置，就以这个值返回
    max_page_size = 9999

    # 重写响应值的方法
    def get_paginated_response(self, data):
        page_size_params = 1
        if self.request.query_params['limit'] != None:
            page_size_params = int(self.request.query_params['limit'])

        return Response(OrderedDict([
            ('code', 0),
            ('msg', "获取成功"),
            ('count', self.page.paginator.count),  # 好多数据
            ('page_index', self.page.number),  # 第几页
            ('limit',page_size_params),  # 每页多少
            ('data', data)  # 结果集
        ]))
